package org.lanyu.springainovel.chat.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.lanyu.springainovel.chat.entity.KnowledgeDocument;

import java.util.List;

/**
 * 文档服务接口
 */
public interface KnowledgeDocumentService {

    /**
     * 保存文档
     *
     * @param document 文档对象
     * @return 保存后的文档对象
     */
    KnowledgeDocument saveDocument(KnowledgeDocument document);

    /**
     * 获取知识库中的文档列�?     *
     * @param knowledgeBaseId 知识库ID
     * @return 文档列表
     */
    List<KnowledgeDocument> getDocumentsByKnowledgeBaseId(Long knowledgeBaseId);

    /**
     * 根据ID获取文档
     *
     * @param id 文档ID
     * @return 文档对象
     */
    KnowledgeDocument getDocumentById(Long id);

    /**
     * 更新文档
     *
     * @param document 文档对象
     * @return 更新后的文档对象
     */
    KnowledgeDocument updateDocument(KnowledgeDocument document);

    /**
     * 删除文档
     *
     * @param id 文档ID
     * @return 操作结果
     */
    boolean deleteDocument(Long id);

    /**
     * 分页获取文档列表
     *
     * @param page 页码
     * @param size 每页大小
     * @param knowledgeBaseId 知识库ID（可选）
     * @return 分页文档列表
     */
    Page<KnowledgeDocument> listDocuments(int page, int size, Long knowledgeBaseId);
    
    /**
     * 添加文档
     *
     * @param content 文档内容
     * @param knowledgeBaseId 知识库ID
     * @param title 文档标题
     * @return 操作结果描述
     */
    String addDocument(String content, Long knowledgeBaseId, String title);
    
    /**
     * 根据文件信息创建文档
     *
     * @param fileName 文件�?     * @param filePath 文件路径
     * @param title 文档标题
     * @param fileSize 文件大小
     * @param knowledgeBaseId 知识库ID
     * @param userId 创建用户ID
     * @return 创建的文档对�?     */
    KnowledgeDocument createDocumentFromFile(String fileName, String filePath, String title, Long fileSize, Long knowledgeBaseId, Long userId);
}
